import numpy as np


# 一个用来演示的矩阵
a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28 ,29, 30],
              [31, 32, 33, 34, 35]])

# 多维数组切片
a[0,1:4]      # >>> array([12, 13, 14])   中括号里面第一个是矩阵的的行，第二个参数是矩阵的列
a[1:4,0]      # >>> array([16, 21, 26])   与上同理
a[::2,::2]    # >>> array([[11, 13, 15],[21, 23, 25],[31, 33, 35]])  ::2的意思是全部行或者列，间隔为2，另外::0会报错
a[:,1]        # >>> array([12,17,22,27,32])   单个 : 即是全选,所有行或者所有列


# 数组属性
print(type(a)) # >>><class 'numpy.ndarray'>
print(a.dtype) # >>>int32
print(a.size) # >>>25
print(a.shape) # >>>(5, 5)
print(a.itemsize) # >>>4  每个项占用的字节数
print(a.ndim) # >>>2
print(a.nbytes) # >>>100

#   花式索引
a=np.arange(0,100,10)   # >>> array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
indices=[1,5,-1]   # 就是索引....但是可以索引出一个列表
b=a[indices]   # >>> array([10, 50, 90])

#  缺省索引
b=a[:5]      # >>> array([ 0, 10, 20, 30, 40])
c=a[a>50]    # >>> array([60, 70, 80, 90])

# where函数的使用  使用where返回一个元组，元组内是索引值
b=np.where(a>50)   # >>> (array([0, 1, 2, 3, 4], dtype=int64),)
b[0]       # >>> array([0, 1, 2, 3, 4], dtype=int64)